/*
 * Copyright (c) 2020-2099 the original author or authors. All rights reserve.
 */
package org.tianyun.cloud.amqp.rabbitmq.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Rabbit消息生产者
 *
 * @auther ebert_chan
 */
@Target(value = {ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface RabbitProducer {

    /**
     * 定义bean名称
     *
     * @return
     * @auther ebert_chan
     */
    @AliasFor("name")
    String value() default "";

    /**
     * 定义bean名称
     *
     * @return
     * @auther ebert_chan
     */
    @AliasFor("value")
    String name() default "";

    /**
     * exchange，默认为空，表示由@RoutingKey自己指定
     *
     * @return
     * @auther ebert_chan
     */
    String exchange() default "";

    /**
     * 定义RabbitTemplate Bean名称，有设置优先使用该Bean投递消息，否则使用默认的RabbitTemplate
     *
     * @return
     * @auther ebert_chan
     */
    String rabbitTemplate() default "";

    /**
     * primary bean. 默认为false
     *
     * @return
     * @auther ebert_chan
     */
    boolean primary() default false;

}
